{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先导入一些用到的库。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "from matplotlib import pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "tf.logging.set_verbosity(tf.logging.INFO)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "先来看看数据长什么样子"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting ./train-images-idx3-ubyte.gz\n",
      "Extracting ./train-labels-idx1-ubyte.gz\n",
      "Extracting ./t10k-images-idx3-ubyte.gz\n",
      "Extracting ./t10k-labels-idx1-ubyte.gz\n",
      "(55000, 784)\n",
      "(55000,)\n",
      "(5000, 784)\n",
      "(5000,)\n",
      "(10000, 784)\n",
      "(10000,)\n"
     ]
    }
   ],
   "source": [
    "mnist = input_data.read_data_sets(\"./\")\n",
    "\n",
    "print(mnist.train.images.shape)\n",
    "print(mnist.train.labels.shape)\n",
    "\n",
    "print(mnist.validation.images.shape)\n",
    "print(mnist.validation.labels.shape)\n",
    "\n",
    "print(mnist.test.images.shape)\n",
    "print(mnist.test.labels.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到images里面有数量不等的图片，每张图片是28x28长度的一个一维向量， 所以用的时候需要先给它还原成28x28的二维图片。labels中则是图片对应的数字的值。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAd0AAAHiCAYAAACtERYWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xd81EX6wPFnUggloStKr6Ep5RR7\nQQELYu8N9VAUbJyKenr+PM5T76yA2Cgq9nqo2LCCDQURpUgv0kF6D0l2fn8kzHxnzYbNZnc25fN+\nvXzdM5nZ3Tm+2Tz7ndmZUVprAQAAiZeS7A4AAFBZkHQBAPCEpAsAgCckXQAAPCHpAgDgCUkXAABP\nSLoAAHhC0g1QSmml1A6l1P1Rtu+nlNpe+LjWie4fSobrWbHEcD2HFLbXSqm0RPcPJVcZ36OKzTEs\npZQWkTZa64WF5WNF5OOwZjVE5Dyt9TuRHoeyoYjrWV9E3hORdiKSKiJzROQ2rfV3xT0OZUNx10Up\ndYWIvCAi12itRwd+3lxElohIutY6z09PEa2irqlSKlVEhojIX0UkS0QWisgJWuvNxT2uvODTXzG0\n1t+ISObeslKqu4iMF5FPktUnlMp2KXgjLxARLSJnish4pdT+/EEuv5RSdUTk7yIyO9l9QVwMEZGj\nRORIEVkmIh1FZHdSexRHDC+XzBUi8rbWekeyO4KS01rv1lrP01qHRESJSL6I1BGRusntGUrpQREZ\nLiLrk90RlE7hB6hBUjBi8bsuMEtrTdKtbJRS1UXkPBEZm+y+oHSUUjOk4JPz+yIyWmu9LsldQoyU\nUoeJyKEi8kyy+4K4OFhE8kTkPKXUGqXUfKXU9cnuVDwxvBy9c6Xgk/SkZHcEpaO17qSUqioiZ4tI\nlWT3B7EpnPt7SkRu1FqHlFLJ7hJKr7GI1BKRbBFpISJtROQLpdR8rfVnSe1ZnHCnG70rRORFzTfP\nKoTCoebXROROpVTnZPcHMRkoIjO01pOT3RHEza7C//2X1nqX1nqGiLwuIr2T2Ke4IulGQSnVRES6\ni8iLSe4K4i9dRFomuxOISQ8RObtwGHKNFHz55lGl1Igk9wuxm1H4vxX25obh5ehcLiLfa60XJbsj\niJ1S6ggp+J2fIgVLhm4SkQYi8mMy+4WYXSkiVQPl/4nI2yIyJim9QalprRcppb4RkbuVUjdJwQfi\nC0Xk4uT2LH5IutHpKyIPJ7sTKLUMKfiWa0sRyRWRmSJymtZ6VVJ7hZgE122KiCil9ojIVq31liR1\nCfFxsRR8cNogIutE5B6t9RfJ7VL8MLzsyhGRaUqp+4I/1Fq301r/6dOzUuoqpdTmwseFPPUR0XOu\np9Z6kta6s9Y6S2tdV2t9vNb6672NuZ5lXpHvz7201t3DNsa4V0R+LXxchR2uLOf+dE211iu11qdo\nrTO11i211s/urasI71F2pAIAwBPudAEA8ISkCwCAJyRdAAA88frt5V4p5zOBnCSfhd6K+3Y9XM/k\nScT1FOGaJhPv0Yol0vXkThcAAE9IugAAeELSBQDAE5IuAACekHQBAPCEpAsAgCckXQAAPCHpAgDg\nCUf7AQDKvpRUE84f1dWpmn3yUyY+/YoBJk77Ylri+1VC3OkCAOAJSRcAAE9IugAAeMKcLgCgzElr\n1sQpz3+wnomXdB8d1rqKiTa3snH9LxLStVLhThcAAE9IugAAeMLwMiqN1A7ZJp47oI5Tt+Ccp00c\nEvcI0hSxx2I+tbmFicc+1ttpV2/M5Lj0E6is0lo2N/Fvd9d36v48pGxds/xoEzf4Zr2J8+PXtbjh\nThcAAE9IugAAeMLwMiqUtCaNnfJv9x5g4tdOfNbEXTNCTrtQ4PNnSNy64GfT/rUXmrjhHa84rZ6b\ncKyJ81asjL7T+JOUqlVN3PRr5dQ91eg7E6cqe23m7NnptLv15L4mzp+3UFA2qXT7beM5/6xr4iU9\nIw8nt/z8r065bf/fTBzavSCOvYs/7nQBAPCEpAsAgCckXQAAPKn0c7qrbznKKavAapGqG2xhUzv3\ncQdOtl9Grzp+SkL6hugsfuhIE8+99EmnLrj8J7j0JxT2efPDnbVMPGV7y4ivdUiNpSY+N3OrU7dq\nwiwTf9DRXZKEfQvO46583S7N+qDRK0U1FxGR7rPOMrF61F1ikrHol1L3Ka15UxPnLV1W6ufDn80b\n0dnES3qOitiu9cQrTdym789OXfi3MMoy7nQBAPCEpAsAgCdlcnh53fXukO/mTrkmHnfSiLi+Vvsq\nUyPW7dZ5Jq6VUs2pW3f5DhOvGu7+Mz62ppeJN1xQ08R5y1fE3E9Edn4vu4QkfDcpd/mP/Yz55OZW\nTrvPTu5o4uKW+3x3+kUmPuOZp5264HKiD6Rb8Z3Gnyz8pz2YfG63JyO2a/PF1SZuO2CeiUM7ljrt\n3N+E6Mwf6V639056wsQXvnCLU9f0n9/H8ApYOPQIt9znqUDJvkdbfuYuC8ruP9vEsVzbsoI7XQAA\nPCHpAgDgCUkXAABPysyc7vxRdi5lbu9hTl2GSg+WPPUo/HVd+6fWCMRu3YvNvjbxZW90N/GmS5o6\n7ViCUAqHHWzC6+rZudUPdx7gNAsu/5m1taGJcwbv57Rb9JC9iNn3VXfq8ufYbeWCy8PSn3UvfG5g\nomnlHe73Ehr9l/m/cPrIzk7560seDpTsNViW527vmN3PLs0K5e4pdT9yex5i4nG93O+MdAxsUYjY\n7TnF/n0fd9ZQpy5V2aVizrKgq3512ulQWTwzqOS40wUAwBOSLgAAnpSZ4eWnT3jRxOHDuv/d0MbE\n6/ZkxfT8/5tmh5CajlfFtIzOih7288pDvV916oI7Fb3cfKKJL3u1u9Nu04X2RByWE5XQlJkm7H/u\nABOnrt7oNHOX/6wx0co73F2n5hxvl4acOuoapy51jo039LO7X+XqaU674PKkZq/87vYjvP+QtXe4\nQ8P7p9oh5V3a1vUddKvTrnruj3Htx/a/2ffrwVXcvz3bdY6JW7y1wamrGIOdftS7e4mJO1Wp6tT1\nmnO6ibPvtdciv4IMJ4fjThcAAE9IugAAeFJmhpeHXnieif/RpaZTt/+7dteZ/A3u8GG0siXyzlOx\naD3exqOf6+3UrXnd7pB0fe3lJg4ONYuItO1vh0Wb38Pwcqz0VDvUHO0wbtX17p42I7c0N3GVtdud\nusVD7DeRX7jcDkMHD1AQEZmWYz/Dcoj9vvXP/jZi3dnzzjdx9XGRh5NVmv0TpqpVi9guXP7Bdnrh\n8fbPR2zXfdpVJt5/9tyonx+umxp9HrFu61g7zVZ7wWQf3Ukq7nQBAPCEpAsAgCckXQAAPCkzc7p6\nmj1Bop67EqPMfzU/NMOd63n+8T4mvn7I0+HNjVcvsztv3XXPYfHvWCW060z333FjO/srHpzHrTfT\nnbftX2upibt84C73OSzDPi64LGhqjvuZ9R/97FKjVHEP2UbJZKXvNvGOsLrckw41cd17lpr4jZaf\nluAVJhX50+/Crul+//G3A15Fs+Uye5rQcVV/MfHRM85x2tV+6QdvfSoLuNMFAMATki4AAJ6UmeFl\nIB5WXejucjTneDu8H1ziE37YfbAuOJwcXhdcFnT52zc47Vp+VfGXO8TTyFGnO+XrbrOHDbzY0q7J\n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\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,8))\n",
    "\n",
    "for idx in range(16):\n",
    "    plt.subplot(4,4, idx+1)\n",
    "    plt.axis('off')\n",
    "    plt.title('[{}]'.format(mnist.train.labels[idx]))\n",
    "    plt.imshow(mnist.train.images[idx].reshape((28,28)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接下来，定义用于训练的网络，首先定义网络的输入。\n",
    "这里我们直接使用上面的数据作为输入，所以定义两个placeholder分别用于图像和lable数据，另外，定义一个float类型的变量用于设置学习率。\n",
    "为了让网络更高效的运行，多个数据会被组织成一个batch送入网络，两个placeholder的第一个维度就是batchsize，因为我们这里还没有确定batchsize，所以第一个维度留空。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "x = tf.placeholder(\"float\", [None, 784])\n",
    "y = tf.placeholder(\"int64\", [None])\n",
    "learning_rate = tf.placeholder(\"float\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def initialize(shape, stddev=0.1):\n",
    "  return tf.truncated_normal(shape, stddev=0.1)\n",
    "\n",
    "L1_units_count = 100\n",
    "\n",
    "W_1 = tf.Variable(initialize([784, L1_units_count]))\n",
    "b_1 = tf.Variable(initialize([L1_units_count]))\n",
    "logits_1 = tf.matmul(x, W_1) + b_1\n",
    "output_1 = tf.nn.relu(logits_1)\n",
    "\n",
    "L2_units_count = 10 \n",
    "W_2 = tf.Variable(initialize([L1_units_count, L2_units_count]))\n",
    "b_2 = tf.Variable(initialize([L2_units_count]))\n",
    "logits_2 = tf.matmul(output_1, W_2) + b_2  \n",
    "\n",
    "logits = logits_2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接下来定义loss和用于优化网络的优化器。loss计算使用了sparse_softmax_cross_entropy_with_logits, 这样做的好处是labels可以不用手动做one_hot省了一些麻烦。这里使用了sgd优化器，学习率为可以根据需要设定。\n",
    "试试看，增大减小学习率，换个优化器再进行训练会发生什么。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "cross_entropy_loss = tf.reduce_mean(\n",
    "    tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=y))\n",
    "\n",
    "optimizer = tf.train.GradientDescentOptimizer(\n",
    "    learning_rate=learning_rate).minimize(cross_entropy_loss)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "需要注意的是，上面的网络，最后输出的是未经softmax的原始logits，而不是概率分布， 要想看到概率分布，还需要做一下softmax。\n",
    "将输出的结果与正确结果进行对比，即可得到我们的网络输出结果的准确率。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "pred = tf.nn.softmax(logits)\n",
    "correct_pred = tf.equal(tf.argmax(pred, 1), y)\n",
    "accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "saver用于保存或恢复训练的模型。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "batch_size = 32\n",
    "trainig_step = 1000\n",
    "\n",
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "以上定义的所有操作，均为计算图，也就是仅仅是定义了网络的结构，实际需要运行的话，还需要创建一个session，并将数据填入网络中"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "after 100 training steps, the loss is 0.395789, the validation accuracy is 0.8764\n",
      "after 200 training steps, the loss is 0.247416, the validation accuracy is 0.8988\n",
      "after 300 training steps, the loss is 0.28057, the validation accuracy is 0.927\n",
      "after 400 training steps, the loss is 0.24447, the validation accuracy is 0.9348\n",
      "after 500 training steps, the loss is 0.209656, the validation accuracy is 0.9366\n",
      "after 600 training steps, the loss is 0.249943, the validation accuracy is 0.9444\n",
      "after 700 training steps, the loss is 0.499338, the validation accuracy is 0.9506\n",
      "after 800 training steps, the loss is 0.142489, the validation accuracy is 0.939\n",
      "after 900 training steps, the loss is 0.0872794, the validation accuracy is 0.9568\n",
      "the training is finish!\n",
      "the test accuarcy is: 0.9406\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "\n",
    "    #定义验证集与测试集\n",
    "    validate_data = {\n",
    "        x: mnist.validation.images,\n",
    "        y: mnist.validation.labels,\n",
    "    }\n",
    "    test_data = {x: mnist.test.images, y: mnist.test.labels}\n",
    "\n",
    "    for i in range(trainig_step):\n",
    "        xs, ys = mnist.train.next_batch(batch_size)\n",
    "        _, loss = sess.run(\n",
    "            [optimizer, cross_entropy_loss],\n",
    "            feed_dict={\n",
    "                x: xs,\n",
    "                y: ys,\n",
    "                learning_rate: 0.3\n",
    "            })\n",
    "\n",
    "        #每100次训练打印一次损失值与验证准确率\n",
    "        if i > 0 and i % 100 == 0:\n",
    "            validate_accuracy = sess.run(accuracy, feed_dict=validate_data)\n",
    "            print(\n",
    "                \"after %d training steps, the loss is %g, the validation accuracy is %g\"\n",
    "                % (i, loss, validate_accuracy))\n",
    "            saver.save(sess, './model.ckpt', global_step=i)\n",
    "\n",
    "    print(\"the training is finish!\")\n",
    "    #最终的测试准确率\n",
    "    acc = sess.run(accuracy, feed_dict=test_data)\n",
    "    print(\"the test accuarcy is:\", acc)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "下面，用我们训练的模型做一个测试。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./model.ckpt-900\n",
      "0.9375\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nhR1WT/LijMqVnWz3ju/uxTfV/92tR51tcdeZyqbVO+c704u25XpxvZfHhV2dCi2reTNnuvULf6Wp\nJunBM10iIqKQsNElIiIKCRtdIiKikJTrMd1V5+3tTLc4wx8bmLW8kZO2NdcfA2z6th9XXbTByVcw\nZUYyq0gJ2NC0khdnRBwfBsdxRx/tj8fmz50dV9l/3bGrM/1W3YcDUzlOWrMveGxaHum+u3jxT0c9\n4qT1/vFSL26H30KrU0W14Fb/Fp+eh7n72Aeb/FTi8qrv497yt/AWv/z60/xrMKp8OKHEZaca9yZE\nREQhYaNLREQUknLdvXzdtW850ydUW+1PtC3ii338cP62TU7S4yv6Jl6xOE1Y3tKLqz1cy0nL+nZy\nZPYKp/Zr/q0cJ0463UmT1eu8eNvS+SUu+9wjvnGmq2fkxMhJ5dV/Xap4cZPMqk5a0xHZkdkphab9\n35NenKf5ReSMz+geb7of9PDDDzb6LywZuv5YJ1vWd+nfr/JMl4iIKCRsdImIiELCRpeIiCgk5XpM\n94mbTnGmb93ZP4aoM9N9RcXqzuLFlXZe48UPdnvfyfdok/Fe/Omm6l58ZFX31qKibNatXjw+t5oX\n96mc52YMzKvdyf/nJHX4Nu7ZVQjJeEn1/Hv8W8zOqf1QRKr/WMirl+7lpNT4ZqZfj4RrQWE56CL/\nmoBRG2s7adVH+7eWcZ2mRvZof2w1WzITLu+3rQVePD+vgZN2XLX/vPik6v6jX096/QUn31FNeyLd\neKZLREQUEja6REREISnX3cvVRoyPmI6dt2aMz59s3MeZvnvfVv53fvCfcPVgn3Zx1ytrs98NUm2a\n/0L0ej+OdPJ1rxR4MtZ83sKQCmvO8LuUfx7kdynXynDfMjQu1+/+mnK3+7SqKuvK3lNtaHuZXTs6\n0/c2fNuLX17nvtkmf83aUOpUkWw+dg9n+qwm73lx8DaheG8Z6vbtBc50g2/92/py1rpl3NjHP3/8\nfcATMctcdKP/5Kpm942Nqx7JxjNdIiKikLDRJSIiCkm57l5Ohm3/LnOmq430p4MdGNVGrCpV+cvO\n9bs3u1Zy/9wP/ed3h7V6Za5br1LNjSKt3M2/ij2ySzlo8OhzvbjDKHYnl0eLD64XM23y+pYRn2xO\nbWUqiGCX/t2PuFcK96q0NZgzZhnBJ0gN+f4EL+583SwnX/66dYil45/+C1AmHO1v53vkbHHyfX7h\n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\ntv0NDC0izxaYiyjuSvcy7ujrsxTbZLHLDHMQtNnm2+6gq7z8i2f/U9b/cRtNbBvlq/2IiIhCkvYx\nXSIiooqCjS4REVFI2OgSERGFJNYjs1Li4IwBHEBOk68L3kv6jflcn+mTivUJcJ2mE7fRHUus9ckz\nXSIiopCw0SUiIgoJG10iIqKQsNElIiIKCRtdIiKikLDRJSIiCgkbXSIiopCw0SUiIgpJqA/HICKi\niiejalUv7jl2vZN2W4MpXnzIjOO9uNLB/6S+YmnAM10iIqKQsNElIiIKCRtdIiKikHBMNwWyGjfy\n4q3td4rrO9lzFjvTs29s48W1Z/jPza47c4uTL+On30pTRaJyY0v/PZzpKp//6sXaq4sXzzu6mpNv\n/wN/9+Kfvuses/wm4/K9uPLHE0pdT3IFx3HnvNDRi0c1eMHJVxCIF05t4sVtwTFdIiIiSgAbXSIi\nopCwe7mU1p6+lxevOsLt8r1h1y+8eFDNz+Iq7+W1LZzp42t84MV1BlSO+b2jmvaMq3yisi6zfj0v\nzh9exYvfaf+Ik29ZfrYX18oY7cUtsqoipsE/xkxafvomL17yRCUn7f/uvdyL6704Lnb5tJ25N/fw\n4hl9n/DigXMPd/Ktuqe1F7f94pfUVyzNeKZLREQUEja6REREIWH3coSMHp29eNal/tWQPx3ymJOv\nQeZE/ztJOHY5p9aCiE9idykT7YjmPO4Psczu9HIgxe02bpjpx8+s6eDFv653h2gWbawdc16Z4l8z\n+2nHj6OWDQDDh/zPiy+YeYmTljFmCii2rQ23Rf182k/tnenWX1Ssbnue6RIREYWEjS4REVFI2OgS\nERGFhGO6ETa2ruHFcw5/NpBSZfvMCXpujf/UqTf/2b1UZdTCX8mqzg4vYxf/6UVbGrtPL5p/rP/U\nrxP3mOik5ak/0Pf96/7TkZr8sNbJp79NT0o9Kwrdu4czPXyf5wNT/q7pi83umO791w724hrTV/oJ\nK/5z8mWsXhh73hn+Ou3w8EVePOOkJ518bbOre/HmIeuctFpn+k+e2/bvspjzqqiyq2/14vUFftzi\n69x0VKfM4JkuERFRSNjoEhERhWSH7V7OatbUmZ55fTMvbjTW70qs+bb7BJSMXPXiOXl+l8jCbe7t\nB82z1njxmX8MdtJWz/SfrNNool9e7bFud5du2ODFtdawmzgZdN9dnOm5F/vxW3u/6MU9K0XcGxKv\n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\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    ckpt = tf.train.get_checkpoint_state('./')\n",
    "    if ckpt and ckpt.model_checkpoint_path:\n",
    "        saver.restore(sess, ckpt.model_checkpoint_path)\n",
    "        final_pred, acc = sess.run(\n",
    "            [pred, accuracy],\n",
    "            feed_dict={\n",
    "                x: mnist.test.images[:16],\n",
    "                y: mnist.test.labels[:16]\n",
    "            })\n",
    "        orders = np.argsort(final_pred)\n",
    "        plt.figure(figsize=(8, 8))\n",
    "        print(acc)\n",
    "        for idx in range(16):\n",
    "            order = orders[idx, :][-1]\n",
    "            prob = final_pred[idx, :][order]\n",
    "            plt.subplot(4, 4, idx + 1)\n",
    "            plt.axis('off')\n",
    "            plt.title('{}: [{}]-[{:.1f}%]'.format(mnist.test.labels[idx],\n",
    "                                                  order, prob * 100))\n",
    "            plt.imshow(mnist.test.images[idx].reshape((28, 28)))\n",
    "\n",
    "    else:\n",
    "        pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
